// --------------------请求模块------------------

// 加载服务器请求组件
import axios from 'axios'
// 加载存储模块的store方法
import store from '@/store'
// 加载处理json字符串转换的方法
import JSONBig from 'json-bigint'

// ----------调用axios(服务器请求)的方法--------
const request = axios.create({
  // 接口的基准路径
  // baseURL: 'http://ttapi.research.itcast.cn/'
  // 临时服务器地址( 临时服务器地址，需要把接口/app去掉)
  baseURL: 'http://toutiao-app.itheima.net',

  transformResponse: [
    function(data) {
      try {
        return JSONBig.parse(data)
      } catch (err) {
        return data
      }
    }
  ]
})

// -------------------请求拦截器-----------------

request.interceptors.request.use(
  function(config) {
    // 服务器临时地址过滤函数
    if (config.url.startsWith('/app')) {
      // 只要以/app开始，则把前四个字符去掉
      config.url = config.url.slice(4)
    }

    // 用户登录发起请求时,统一调用这里获取token令牌
    // 解构存储模块里面获取的用户信息
    const { user } = store.state
    // 判断是否有token令牌
    if (user && user.token) {
      // 没有就添加token令牌
      config.headers.Authorization = `Bearer ${user.token}`
    }
    // 有就直接返回数据
    return config
  },
  // 请求出错时,进入这里
  function(error) {
    return Promise.reject(error)
  }
)
// ------------------------------------------

// 对外导出 axios 的请求方法
export default request
